/* @author cerimice */
package Persistencia.Definicion;

import Sistema.Configuracion;

import java.util.Date;
import java.io.Serializable;

import java.util.Collection;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.NamedQuery;
import javax.persistence.NamedQueries;

import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;

@Entity
@Table(name="cartucho")
@NamedQueries
    ({
    @NamedQuery(name="cartucho.lista",                  query="SELECT c FROM Cartucho c WHERE c.clave LIKE (:valor) ORDER BY c.clave"),
    @NamedQuery(name="cartucho.listaModeloCartucho",    query="SELECT c FROM Cartucho c WHERE c.modeloCartucho LIKE (:valor) ORDER BY c.modeloCartucho"),
    @NamedQuery(name="cartucho.listaModeloImpresora",   query="SELECT c FROM Cartucho c WHERE c.modeloImpresora LIKE (:valor) ORDER BY c.modeloImpresora")
    })

public class Cartucho implements Serializable
    {
    @Id
    @Basic(optional=false)
    @Column(name="clave",nullable=false)
    private String clave;
    
    @Basic(optional=false)
    @Column(name="cliente",nullable=false)
    private String cliente;
    
    @Basic(optional=false)
    @Column(name="marca",nullable=false)
    private String marca;
    
    @Basic(optional=false)
    @Column(name="modeloImpresora",nullable=false)
    private String modeloImpresora;
    
    @Basic(optional=false)
    @Column(name="modeloCartucho",nullable=false)
    private String modeloCartucho;
    
    @Basic(optional=false)
    @Column(name="numeroSerie",nullable=false)
    private String numeroSerie;
    
    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="cliente",referencedColumnName="clave",insertable=false,updatable=false)
    private Cliente objCliente;
    
    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="marca",referencedColumnName="clave",insertable=false,updatable=false)
    private Marca objMarca;
    
    @OneToMany(mappedBy="objCartucho",cascade=CascadeType.ALL,fetch= FetchType.EAGER)
    private Collection<SeguimientoCartucho> seguimiento;
    
    public Cartucho()
        {clave = Configuracion.getFormatoClave().format(new Date());}
    
    public void setClave(String clave)                      {this.clave = clave;}
    public void setCliente(String cliente)                  {this.cliente = cliente;}
    public void setMarca(String marca)                      {this.marca = marca;}
    public void setModeloImpresora(String modeloImpresora)  {this.modeloImpresora = modeloImpresora;}
    public void setModeloCartucho(String modeloCartucho)    {this.modeloCartucho = modeloCartucho;}
    public void setNumeroSerie(String numeroSerie)          {this.numeroSerie = numeroSerie;}
    
    public String getClave()                {return clave;}
    public String getCliente()              {return cliente;}
    public String getMarca()                {return marca;}
    public String getModeloImpresora()      {return modeloImpresora;}
    public String getModeloCartucho()       {return modeloCartucho;}
    public String getNumeroSerie()          {return numeroSerie;}
    
    public Cliente  getObjCliente()         {return objCliente;}
    public Marca    getObjMarca()           {return objMarca;}
    public Collection<SeguimientoCartucho>  getSeguimiento()    {return seguimiento;}
    
    @Override
    public String toString()                {return this.clave;}
    }
